home *** CD-ROM | disk | FTP | other *** search
- { From: tjacobs@clark.net (Todd A. Jacobs) }
- unit Redir;
-
- interface
-
- uses
- Dos;
-
- function SetOutput(FileName: PathStr): Boolean;
- procedure CancelOutput;
-
- implementation
-
- const
- OutRedir: Boolean = False;
-
- function SetOutput(FileName: PathStr): Boolean;
- begin
- FileName:=FileName+#0;
- SetOutput:=False;
- asm
- push ds
- mov ax, ss
- mov ds, ax
- lea dx, FileName[1]
- mov ah, 3Ch
- int 21h
- pop ds
- jnc @@1
- ret
- @@1:
- push ax
- mov bx, ax
- mov cx, Output.FileRec.Handle
- mov ah, 46h
- int 21h
- mov ah, 3Eh
- pop bx
- jnc @@2
- ret
- @@2:
- int 21h
- end;
- OutRedir:=True;
- SetOutput:=True;
- end;
-
- procedure CancelOutput;
- var
- FileName: String[4];
- begin
- if not OutRedir then Exit;
- FileName:='CON'#0;
- asm
- push ds
- mov ax, ss
- mov ds, ax
- lea dx, FileName[1]
- mov ax, 3D01h
- int 21h
- pop ds
- jnc @@1
- ret
- @@1:
- push ax
- mov bx, ax
- mov cx, Output.FileRec.Handle
- mov ah, 46h
- int 21h
- mov ah, 3Eh
- pop bx
- int 21h
- end;
- OutRedir:=False;
- end;
-
- end.
- {
- Standard output will be changed to FileName. The FileName can be NUL.
- When your
- executed program is using int $10, all is hardly. In your main program use:
-
- SetOutput('NUL');
- Exec(....);
- CancelOutput;
- }
-